// 1. 类型固定
// function foo(name: string, age: number) {

// }

// foo('a', 10)
// foo('b', 20)

// 泛型 类型参数化
// function bar(arg) {
//     return arg
// }

// // 丢失类型
// const r1 = bar(123)
// const r2 = bar('abc')
// const r3 = bar(true)


function bar<T>(arg: T): T {
    return arg
}
// 保留类型 完整写法
const r1 = bar<number>(123)
const r2 = bar<string>('abc')
const r3 = bar<boolean>(true)
// 省略写法  类型推导  const 为 字面量类型
let r4 = bar('aaa')
const r5 = bar(11111)

export { }
